5e622171f2df29013e77cdd89feb12613a8b31d2,src/main/java/org/roaringbitmap/RunContainer.java,RunContainer,and,#BitmapContainer#,333
Before Change
Util.resetBitmapRange(answer.bitmap, start, end); // had been x.bitmap
start = end + Util.toIntUnsigned(this.getLength(rlepos)) + 1;
}
Util.resetBitmapRange(answer.bitmap, start, Util.maxLowBitAsInteger() + 1); // had been x.bitmap
answer.computeCardinality();
if (answer.getCardinality() > ArrayContainer.DEFAULT_MAX_SIZE) {
return answer;
After Change
int start = 0;
for (int rlepos = 0; rlepos < this.nbrruns; ++rlepos) {
int end = Util.toIntUnsigned(this.getValue(rlepos));
int prevOnes = Util.cardinalityInBitmapRange(answer.bitmap, start, end);
Util.resetBitmapRange(answer.bitmap, start, end); // had been x.bitmap
answer.updateCardinality(prevOnes, 0);
start = end + Util.toIntUnsigned(this.getLength(rlepos)) + 1;
}
int ones = Util.cardinalityInBitmapRange(answer.bitmap, start, BitmapContainer.MAX_CAPACITY);
Util.resetBitmapRange(answer.bitmap, start, BitmapContainer.MAX_CAPACITY); // had been x.bitmap
answer.updateCardinality(ones, 0);
if (answer.getCardinality() > ArrayContainer.DEFAULT_MAX_SIZE) {
return answer;